import json
import time
from typing import Dict, Any, Optional

DONE_CHUNK = b"data: [DONE]\n\n"

def create_sse_data(data: Dict[str, Any]) -> bytes:
    """将字典数据格式化为 SSE 事件字符串。"""
    return f"data: {json.dumps(data)}\n\n".encode('utf-8')

def create_chat_completion_chunk(
    request_id: str,
    model: str,
    delta: Dict[str, Any],
    finish_reason: Optional[str] = None
) -> Dict[str, Any]:
    """
    创建一个与 OpenAI 兼容的聊天补全流式块。
    
    :param request_id: 请求的唯一 ID。
    :param model: 模型的名称。
    :param delta: 包含 'content', 'role', 或 'tool_calls' 的字典。
    :param finish_reason: 结束原因 (例如, 'stop', 'tool_calls')。
    :return: 一个字典，代表一个 chat.completion.chunk 对象。
    """
    return {
        "id": request_id,
        "object": "chat.completion.chunk",
        "created": int(time.time()),
        "model": model,
        "choices": [
            {
                "index": 0,
                "delta": delta,
                "finish_reason": finish_reason
            }
        ]
    }
